Telegram Group & Telegram Channel
В Python можно использовать любой объект в качестве ключа словаря, если он реализует метод __hash__. Этот метод может возвращать любое целое число, но есть одно обязательное условие: равные объекты должны иметь одинаковые хэши (обратное не обязательно).

Также не стоит использовать изменяемые объекты в качестве ключей, потому что если объект изменится и станет не равным самому себе в прошлом, его больше нельзя будет найти в словаре.

Есть и один странный момент, который может удивить во время отладки или написания unit-тестов:


class A:
def __init__(self, x):
self.x = x

def __hash__(self):
return self.x



hash(A(2)) # 2
hash(A(1)) # 1
hash(A(0)) # 0
hash(A(-1)) # внимание!
# -2
hash(A(-2)) # -2


В CPython значение -1 зарезервировано для внутренних ошибок, поэтому оно неявно преобразуется в -2.

👉@BookPython



tg-me.com/BookPython/3669
Create:
Last Update:

В Python можно использовать любой объект в качестве ключа словаря, если он реализует метод __hash__. Этот метод может возвращать любое целое число, но есть одно обязательное условие: равные объекты должны иметь одинаковые хэши (обратное не обязательно).

Также не стоит использовать изменяемые объекты в качестве ключей, потому что если объект изменится и станет не равным самому себе в прошлом, его больше нельзя будет найти в словаре.

Есть и один странный момент, который может удивить во время отладки или написания unit-тестов:


class A:
def __init__(self, x):
self.x = x

def __hash__(self):
return self.x



hash(A(2)) # 2
hash(A(1)) # 1
hash(A(0)) # 0
hash(A(-1)) # внимание!
# -2
hash(A(-2)) # -2


В CPython значение -1 зарезервировано для внутренних ошибок, поэтому оно неявно преобразуется в -2.

👉@BookPython

BY Библиотека Python разработчика | Книги по питону


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/BookPython/3669

View MORE
Open in Telegram


Библиотека Python разработчика Telegram | DID YOU KNOW?

Date: |

The seemingly negative pandemic effects and resource/product shortages are encouraging and allowing organizations to innovate and change.The news of cash-rich organizations getting ready for the post-Covid growth economy is a sign of more than capital spending plans. Cash provides a cushion for risk-taking and a tool for growth.

Launched in 2013, Telegram allows users to broadcast messages to a following via “channels”, or create public and private groups that are simple for others to access. Users can also send and receive large data files, including text and zip files, directly via the app.The platform said it has more than 500m active users, and topped 1bn downloads in August, according to data from SensorTower.Библиотека Python разработчика from us


Telegram Библиотека Python разработчика | Книги по питону
FROM USA